LlamaIndexのアップデートまとめ:0.6.23(2023/06/11) から 0.6.27(2023/06/17) まで【FLARE・Function calling・MMRなど】
こんちには。
データアナリティクス事業本部 インテグレーション部 機械学習チームの中村です。
本記事は「0.6.23(2023/06/11)」から「0.6.27(2023/06/17)」までのLlamaIndexのアップデートまとめです。
ソースコードを見ながらアップデート点をピックアップしています。
個人的な注目は以下の変更かなと思います。
- 0.6.25.post1
- FLARE: Forward Looking Active REtrieval対応
- FLAREは信頼度スコアの低いトークンを再生成する仕組みであり、論文が2023年の5月に出ているものの実装
- 0.6.26
- Function callingへの対応
- 0.6.27
- CallbackManagerの修正(新しいHandler、EventPayloadでpayloadへのアクセスがし易く)
- VectorStoreにMMR: Maximum Marginal Relevanceが追加
Function callingへの対応の他、新しい機能のFLAREなども気になります。
0.6.22からCHANGELOG.mdが記載されるようになっていますので、そちらもご参照ください。
それでは見ていきましょう。
各アップデート
2023-06-11 LlamaIndex 0.6.23
大きな変更はなく、公式ドキュメントの修正やサンプルノートブックの修正、バグFIXなどが行われているようです。
2023-06-13 LlamaIndex 0.6.24
Microsoftのguidanceとの統合機能がメインのアップデートとなっているようです。
- Microsoftのguidanceとの統合機能が追加
- BasePydanticProgramのサブクラスとして、GuidancePydanticProgramが追加され、ユーザが定義したPydanticモデルに沿った出力を得られる
- SubQuestionQueryEngineに与えるQuestionGeneratorとして、GuidanceQuestionGeneratorも追加
- LLMQuestionGeneratorの代わりに使用することで、期待する構造を持った出力を得ることを保証する
- 公式ドキュメント : guidanceとの統合の説明
- 公式ドキュメント : Sub-Question Query Engineでguidanceを使用する方法
- VectorStoreであるPinecone and Weaviateに対象のテキストを補足するためのTEXT_KEYが追加
- DEFAULT_TEXT_KEYとして"text"が設定され、これを任意のキーに設定可能に修正されている
2023-06-13 LlamaIndex 0.6.25
大きな変更は無いようです。
2023-06-13 LlamaIndex 0.6.25.post1
FLARE Query Engineがメインのアップデートとなっているようです。
FLARE: Forward Looking Active REtrievalは、信頼度スコアの低いトークンを再生成する仕組みであり、論文が2023年の5月に出ているもので、その実装となっています。
- FLARE Query Engineの追加(ベータ版)
- FLAREは、Forward Looking Active REtrievalで、信頼度スコアの低いトークンが含まれて要る場合は文章を再生成する仕組みが導入されている
- FLAREについては論文も公開されている
- 論文 : Active Retrieval Augmented Generation
- 論文作者のツイート
- ベータ版であるため、本機能のインターフェースはまだ安定版ではない点に注意
- FLARE Query Engineに関連する実装
- BaseQueryEngineのサブクラスに、FLAREInstructQueryEngineの追加
- BaseOutputParserのサブクラスとして、IsDoneOutputParserとQueryTaskOutputParserの追加
- BaseLookaheadAnswerInserterが新規実装
- BaseLookaheadAnswerInserterのサブクラスとして、LLMLookaheadAnswerInserterとDirectLookaheadAnswerInserterも実装
- 公式ドキュメント : FLARE Query Engine
2023-06-14 LlamaIndex 0.6.26
Function callingへの対応がメインのようです。
- OpenAI APIに追加されたFunction callingへの対応
- BaseChatEngine, BaseQueryEngineのサブクラスとして、OpenAIAgentが追加
- OpenAIAgent.from_toolsで、Function callingを使用可能
- GitHubノートブック : ChatEngineとしてOpenAIAgentを使いFunction callingを使用する例
- GitHubノートブック : QueryEngineとしてOpenAIAgentを使いFunction callingを使用する例
- BasePydanticProgramのサブクラスとして、OpenAIPydanticProgram
- 0.6.24でguidanceを使用して、ユーザが定義したPydanticモデルに沿った出力を得る実装をしていたが、これをFunction callingでできるようにサブクラスを追加している
- GitHubノートブック : OpenAIPydanticProgramを使用する例
2023-06-17 LlamaIndex 0.6.27
CallbackManagerの修正や、VectorStoreにMMR: Maximum Marginal Relevanceが追加されているアップデートがあります。
MMRは、クエリとの類似度を維持しながら検索結果の冗長性を排除するために並べ替える手法で、レコメンドなどにも出てくる手法です。
また、0.6.26で実装済みのOpenAIAgentについて、クラス設計が見直されています。
- OpenAIAgentの修正
- OpenAIAgentがBaseOpenAIAgentのサブクラスとして再実装
- BaseOpenAIAgentにRetrieverOpenAIAgentが追加
- GitHubノートブック : RetrieverOpenAIAgentの使用例
- CallbackManagerの修正
- CallbackManagerのHandlerとしてTokenCountingHandlerが追加
- CallbackManagerのHandlerのpayloadがEnum型のEventPayloadとして定義
- GitHubノートブック : TokenCountingHandlerの使用例
- 従来はpayloadのキーを覚えておく必要があったが、これがEventPayloadとして定義されたことで使用しやすくなった
- FLAREに使用するデフォルトプロンプトのテンプレートが修正
- VectorStoreQueryModeにMMR: Maximum Marginal Relevanceが追加
- MMRは、クエリとの類似度を維持しながら検索結果の冗長性を排除するために並べ替える手法
- GitHubノートブック : SimpleVectorStoreでMMRモードを使用する例
まとめ
いかがでしたでしょうか。
本記事がLlamaIndexのアップデートが気になる方のご参考になれば幸いです。